package com.dc.refactoring._6_处理概括关系._6_ExtractSubclass.oldObject;

/**
 * Description: 用来决定当地修车厂的工作报价
 *
 * 正常场景：
 * 当地都是做计件工作，我们想要去获取 当地的工资水平（零件收费价格*数量）
 * 但是存在某种特例，里面的 员工工资有另外一套计算逻辑
 * 针对这种情况，我们需要将员工工资的计算逻辑独立处理
 *
 * @author: gdc
 * @date: 2020/12/12
 * @version 1.0
 */
public class JobItem {
    /**
     * 零件收费价格
     */
    private int unitPrice;
    /**
     * 数量
     */
    private int quantity;
    /**
     * 员工
     */
    private Employee employee;
    /**
     * 是否按照工时
     */
    private boolean isLabor;

    public JobItem(int unitPrice, int quantity, Employee employee, boolean isLabor) {
        this.unitPrice = unitPrice;
        this.quantity = quantity;
        this.employee = employee;
        this.isLabor = isLabor;
    }

    /**
     * 获取工资金额
     */
    public int getTotalPrice(){
        return getUnitPrice() * quantity;
    }

    /**
     * 获取报价
     * 根据是否按照工时，来返回员工的报价还是当地的报价
     */
    public int getUnitPrice() {
        return isLabor ? employee.getRate() : unitPrice;
    }

    public int getQuantity(){
        return quantity;
    }

    public Employee getEmployee() {
        return employee;
    }
}
